package com.itheima.tliassystem.aspect;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

@Component
@Aspect
public class Aspec5 {
    @Around("@annotation(com.itheima.tliassystem.aspect.Log)")
    public Object around(ProceedingJoinPoint PJP) throws Throwable {
        System.out.println("前置通知进行时的前置功能增强");
        //需求 在增强方法中 获取目标方法的信息
        Signature signature = PJP.getSignature();//获取目标方法的签名
        System.out.println(signature);
        String name = signature.getName();//获取目标方法名称
        System.out.println(name);
        Class<?> aClass = PJP.getClass();//获取目标方法类的信息
        System.out.println(aClass);
        Object[] args = PJP.getArgs();//获取目标方法的实参列表
        System.out.println(args);
        Object proceed = PJP.proceed();//获取目标方法的执行结果
        return proceed;
    }
}
